package com.xb.loan.cashier.biz.pay;


import com.xb.loan.cashier.biz.pay.bean.PaymentChargeOrder;
import com.xb.loan.cashier.service.constant.ICashierEnumConst;

/**
 * 充值支付抽象类
 * 将充值中公用方法提出
 */
public abstract class PaymentForCharge implements IPaymentForCharge {
	
	/**
	 * 统一充值方法（通过支付类型判断调用哪个支付方法，1：web；2：wap；3：app）
	 * 
	 * @param paymentChargeOrder 充值信息
	 * @param tradeType 1：web；2：wap；3：app
	 * @return 通过分析交易类型，调用chargeByApp、chargeByWap、chargeByWeb
	 * @throws Exception
	 * 2016年6月7日 by lh.qiu
	 */
	@Override
	public String charge(PaymentChargeOrder paymentChargeOrder, int tradeType) throws Exception {
		// 返回支付网关或Json数据
		String payURL = "";
		// 判断是哪种支付类型，调用相应的支付方法
		if (tradeType == ICashierEnumConst.CashierTradeType.WEB.getId()) {
			payURL = chargeByWeb(paymentChargeOrder);
		} else if (tradeType == ICashierEnumConst.CashierTradeType.WAP.getId()) {
			payURL = chargeByWap(paymentChargeOrder);
		} else if (tradeType == ICashierEnumConst.CashierTradeType.APP.getId()) {
			payURL = chargeByApp(paymentChargeOrder);
		}
		return payURL;
	}
}
